prompt 预交金账户查询接口(统一支付平台) SP_PAY_YJJ_GETGRJBXX
create or replace procedure  SP_PAY_YJJ_GETGRJBXX
(
IN_OPERETORID         in   varchar2     ,--入参:char(30)    N   操作员编号  
IN_OPERETORNAME       in   varchar2     ,--入参:char(50)    N   操作员姓名  
IN_TERMNO             in   varchar2     ,--入参:char(32)    Y   终端编号    
IN_CARDTYPE           in   varchar2     ,--入参:char(2) N   卡类型  01社保卡 02市民健康卡 03院内就诊卡 04身份证号 05病案号/住院号 06住院ID
IN_CARDNO             in   varchar2     ,--入参:char(32)    N   卡号    
IN_ACCOUNTTYPE        in   varchar2     ,--入参:char(2) N   帐户类型    01门诊预交金账户 02 住院预交金账户
IN_IDNO               in   varchar2     ,--入参:char(32)    Y   身份证号    
IN_NOTES              in   varchar2     ,--入参:char(256)   Y   备注信息
OUT_RETCODE           out  varchar2     ,--出参: 返回码 00成功
OUT_RETMSG            out  varchar2     ,--出参: 返回说明   
OUT_CARDTYPE          out  varchar2     ,--出参: 卡类型 
OUT_CARDNO            out  varchar2     ,--出参: 卡号   
OUT_HISCUSTID         out  varchar2     ,--出参: 持卡人院内ID   
OUT_BALANCE           out  number       ,--出参: 余额   
OUT_IDTYPE            out  varchar2     ,--出参: 证件类型   
OUT_IDNO              out  varchar2     ,--出参: 证件号 
OUT_USERNAME          out  varchar2     ,--出参: 用户姓名   
OUT_USERSEX           out  varchar2     ,--出参: 性别   1 男 2 女
OUT_ACCOUNTTYPE       out  varchar2     ,--出参: 账户类型   01 门诊预交金账户 02 住院预交金账户
OUT_STATE             out  varchar2      --出参: 账户状态   01：正常 02：挂失  03：冻结   04：注销
)
as
-- MODIFICATION HISTORY
-- Person      Date        Comments
-- qks         2018.03.06  create：统一支付平台接口改造; for MZSF9-20180306-002
-- liwm        2019.05.31  归档现场修改 ，增加账户状态 MZSF9-20190530-005
-- zhangyc     2022.05.20  增加返回 OUT_STATE 01：正常 02：挂失  03：冻结   04：注销	
  LS_BRZYID   number(10);
  LS_ZHYE00   number(12,2);
  RBRXX     BM_BRXXB0%rowtype; 
  RZYXX     ZY_BRXXB0%rowtype;
  LS_SFDJ00 ZY_BRZHXX.SFDJ00%type;
begin
 OUT_RETCODE:='99';--出参: 返回码   00成功
 OUT_STATE:='01';--出参: 账户状态   01：正常 02：挂失  03：冻结   04：注销
 --门诊业务处理--begin--
 if IN_ACCOUNTTYPE in ('01') then  --01门诊预交金账户 02 住院预交金账户
   select SF_PAY_BRZYID(IN_CARDTYPE,IN_CARDNO,IN_ACCOUNTTYPE) into  LS_BRZYID  from dual;
   if LS_BRZYID=0 then 
     OUT_RETCODE:='01';
     OUT_RETMSG:='未找到有效的病人基本信息!';
     rollback;
     return;
   end if;
  
  --执行BM_BRXXB0  
  begin
     select * into RBRXX from  BM_BRXXB0 A  where A.BRID00=LS_BRZYID;
  exception
   when others  then
    OUT_RETCODE:='02';
    OUT_RETMSG:='查找BM_BRXXB0异常!';
    rollback;
    return;
  end;
  
    --判断账户状态
 begin
   select SFDJ00 into LS_SFDJ00 from  SF_BRZHXX where  BRID00=LS_BRZYID;
  exception
   when others  then
    OUT_RETCODE:='02';
    OUT_RETMSG:='查找SF_BRZHXX异常!';
  end;
  --OUT_STATE 账户状态   01：正常 02：挂失  03：冻结   04：注销
  if LS_SFDJ00 in ('1') then
    OUT_STATE:='03'; 
  elsif LS_SFDJ00 in ('2') then  --0 正常  1  冻结  2 停用
    OUT_STATE :='04';
   end if;
   
  --执行余额 
  --0 门诊 1住院 /BRID00 /交费类型 1：门诊  2:住院/返回类型 0:可用余额 1:总余额 2：现金余额 3:停用金额
  begin
  select SF_SF_GETBRZHYE(0,LS_BRZYID,1,0) into  LS_ZHYE00 from dual;
  exception
   when others  then
    LS_ZHYE00:=0;
  end;
   
 end if;
 --门诊业务处理--end--  

--住院业务处理--begin--
 if IN_ACCOUNTTYPE in ('02') then  --01门诊预交金账户 02 住院预交金账户
   select SF_PAY_BRZYID(IN_CARDTYPE,IN_CARDNO,IN_ACCOUNTTYPE) into  LS_BRZYID  from dual;
   if LS_BRZYID=0 then 
     OUT_RETCODE:='01';
     OUT_RETMSG:='未找到有效的病人基本信息!';
     rollback;
     return;
   end if;
  
  --执行BM_BRXXB0  
  begin
     select A.* into RBRXX from  BM_BRXXB0 A,ZY_BRXXB0 B  where A.BRID00=B.BRID00 and B.ZYID00=LS_BRZYID;
  exception
   when others  then
    OUT_RETCODE:='02';
    OUT_RETMSG:='查找ZY_BRXXB0异常!';
  end;

  --判断账户状态
 begin
   select SFDJ00 into LS_SFDJ00 from  ZY_BRZHXX where  ZYID00=LS_BRZYID;
  exception
   when others  then
    OUT_RETCODE:='02';
    OUT_RETMSG:='查找ZY_BRZHXX异常!';
  end;

  --OUT_STATE 账户状态   01：正常 02：挂失  03：冻结   04：注销
  if LS_SFDJ00 in ('1') then
    OUT_STATE:='03'; 
  elsif LS_SFDJ00 in ('2') then  --0 正常  1  冻结  2 停用
    OUT_STATE :='04';
   end if;

  --执行余额
  --0 门诊 1住院 /BRID00 /交费类型 1：门诊  2:住院/返回类型 0:可用余额 1:总余额 2：现金余额 3:停用金额
  begin
  select SF_SF_GETBRZHYE(1,RBRXX.BRID00,2,0) into  LS_ZHYE00 from dual;
  exception
   when others  then
    LS_ZHYE00:=0;
  end;
   
 end if;
 --住院业务处理--end--  
 
 OUT_RETCODE:='00';--出参: 返回码   00成功
 OUT_RETMSG:='';--出参: 返回说明    
 OUT_CARDTYPE:=IN_CARDTYPE;--出参: 卡类型
 OUT_CARDNO:=IN_CARDNO;--出参: 卡号
 OUT_ACCOUNTTYPE:=IN_ACCOUNTTYPE;--出参: 账户类型   01 门诊预交金账户 02 住院预交金账户
 OUT_BALANCE:=nvl(LS_ZHYE00,0);--出参: 余额  
 OUT_HISCUSTID:=nvl(LS_BRZYID,0);--出参: 持卡人院内ID   
 --OUT_STATE:='01';--出参: 账户状态   01：正常 02：挂失  03：冻结   04：注销
 OUT_IDTYPE:=RBRXX.BRZJLX;--出参: 证件类型  
 OUT_IDNO:=RBRXX.BRZJBH;--出参: 证件号  
 OUT_USERNAME:=RBRXX.BRXM00;--出参: 用户姓名
 if RBRXX.BRXB00='男'   then  --出参: 性别  1 男 2 女
  OUT_USERSEX:='1';
 else
    OUT_USERSEX:='2';
 end if;
   
 
 --提交事务
 if OUT_RETCODE='00' then 
  commit;
 else
  rollback;
 end if; 
    
exception
  when no_data_found then
    OUT_RETCODE:='99';
    OUT_RETMSG:=substrb('预交金账户查询(SP_PAY_YJJ_GETGRJBXX)错误!'||sqlerrm,1,200);
    rollback;
  when others   then
    OUT_RETCODE:='99';
    OUT_RETMSG:=substrb('预交金账户查询(SP_PAY_YJJ_GETGRJBXX)错误!'||sqlerrm,1,200);
    rollback;   
end;
/
show error;
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%